package com.nbst.dao.mapper.mes;

import java.util.List;
import java.util.Map;

import com.nbst.dao.base.mapper.BaseMapper;
import com.nbst.model.mes.Card;

/**
 * 
 * @ClassName: CardMapper
 * @Description: 工序流转卡Mapper层
 * @author 李懿礼
 * @date 2018年10月22日
 *
 */
public interface CardMapper extends BaseMapper<Card> {
	/**
	 * 批量删除
	 * 
	 * @param list
	 * @return int
	 * @author Ycy
	 * @date 2018年11月29日
	 */
	int deleteBatch(Map<String, Object> map);

	/**
	 * 根据任务单内码查询工序有无设备组
	 * 
	 * @param fIcmoId
	 * @return List<Integer>
	 * @author King
	 * @date 2019年1月12日
	 */
	List<Integer> checkCardMachine(Integer fIcmoId);

	/**
	 * 根据物料申请单id修改工序的投入数
	 * 
	 * @param map
	 * @return int
	 * @author King
	 * @date 2019年3月4日
	 */
	int updatePPQty(Integer id);

	Integer isExist(Map<String, Object> map);

	Integer isFirst(Map<String, Object> map);

	int insertCard(Card card);

	int updateCard(Card card);

	/**
	 * 派工中心按工序展示列表
	 * 
	 * @param map
	 * @return List<Card>
	 * @author King
	 * @date 2019年4月2日
	 */
	List<Card> fDispatchCard(Map<String, Object> map);

	/**
	 * 根据设备组名称在工序流转卡信息里查询设备组id
	 * 
	 * @param fMachineGroupName
	 * @return Integer
	 * @author King
	 * @date 2019年4月26日
	 */
	Integer getfMachineGroupId(String fMachineGroupName);

	/**
	 * 根据生产任务单内码查询工序流转卡中最大投产数
	 * 
	 * @param fIcmoId
	 * @return Double
	 * @author King
	 * @date 2019年5月6日
	 */
	Double getMaxPPqty(Integer fIcmoId);

	List<Map<String, Object>> cx(Map<String, Object> map);

	List<Integer> findicmos(Map<String, Object> map);

	/**
	 * 根据合并工序的报工id查询合并工序的代表工序
	 * 
	 * @param fEndWorkid
	 * @return
	 */
	Card findByOperEndWorkId(Integer fEndWorkid);

	/**
	 * 根据任务单号与工序号查询工序信息的条数
	 * 
	 * @param map
	 * @return int
	 * @author King
	 * @date 2019年6月27日
	 */
	int getfOperSNCount(Map<String, Object> map);

	/**
	 * 根据fMergeCode获取合并工序的id
	 * 
	 * @param fMergeCode
	 * @return List
	 * @author Fuyr
	 * @date 2019年8月13日
	 */
	List<Card> getAllCard(String fMergeCode);

	List<Map<String, Object>> getZaizhi(String fNumber);

	int isStartWork(Integer id);

	int isSubcOut(Integer id);

	List<Card> getAllCardMerge(Map<String, Object> map);

	Integer countGX(String fNumber);

	List<Card> findByCondition1(Map<String, Object> map);

	/**
	 * 根据流转卡id查询该工序是否为首道工序
	 * 
	 * @param fCardId
	 * @return Boolean
	 * @author King
	 * @date 2020年1月8日
	 */
	Boolean isFirstOper(Integer fCardId);

	/**
	 * 根据合并工序的代表工序id查询合并工序详细信息
	 * 
	 * @param id
	 * @return List<Map<String,Object>>
	 * @author King
	 * @date 2020年3月3日
	 */
	List<Map<String, Object>> getMergeCardInfo(Integer id);

	/**
	 * 将加工说明同步至fPrimaryNote
	 */
	int updatefPrimaryNote1();

	/**
	 * 将fPrimaryNote的值用||截取，然后取第一份
	 */
	int updatefPrimaryNote2();

	/**
	 * 根据流转卡id获取该流转卡合并的的全部工序信息
	 * 
	 * @param id
	 *            流转卡id
	 * @return List<Card>
	 * @author King
	 * @date 2020年3月10日
	 */
	List<Card> getCardMerge(Integer id);

	/**
	 * 根据流转卡id获取首道工序信息
	 * 
	 * @param id
	 * @return Card
	 * @author King
	 * @date 2020年5月14日
	 */
	Card getFirstOper(Integer id);

	/**
	 * 获取合并工序的id
	 * 
	 * @param fMergeCode
	 * @return List<Integer>
	 * @author King
	 * @date 2020年8月22日
	 */
	List<Integer> getAllCardId(String fMergeCode);

	/**
	 * 获取最后一道工序的Id
	 * 
	 * @param fIcmoId
	 * @return Integer
	 * @author King
	 * @date 2021年2月10日
	 */
	Integer getLastCardId(Integer fIcmoId);

}